class Utils {
    /**
     * 动态构建完整URL
     * @param {string} path - 资源路径
     * @return {string} 完整的URL
     */
    static buildFullUrl(path) {
        // 对于默认头像路径，直接返回完整URL，不需要添加上下文路径
        if (path === '/images/default-avatar.png') {
            const protocol = window.location.protocol;
            const hostname = window.location.hostname;
            const port = window.location.port;
            
            let url = protocol + '//' + hostname;
            
            // 如果不是默认端口，则添加端口号
            if ((protocol === 'http:' && port && port !== '80') || 
                (protocol === 'https:' && port && port !== '443')) {
                url += ':' + port;
            }
            
            url += path;
            return url;
        }
        
        // 对于其他路径，保持原有逻辑
        const protocol = window.location.protocol;
        const hostname = window.location.hostname;
        const port = window.location.port;
        const contextPath = window.location.pathname.split('/')[1];
        
        let url = protocol + '//' + hostname;
        
        // 如果不是默认端口，则添加端口号
        if ((protocol === 'http:' && port && port !== '80') || 
            (protocol === 'https:' && port && port !== '443')) {
            url += ':' + port;
        }
        
        // 确保路径正确连接
        if (contextPath && !path.startsWith('/' + contextPath)) {
            url += '/' + contextPath;
        }
        
        url += path.startsWith('/') ? path : '/' + path;
        
        return url;
    }
    
    /**
     * 格式化日期时间
     * @param {string} dateString - 日期字符串
     * @return {string} 格式化后的日期时间
     */
    static formatDate(dateString) {
        Utils.formatDate = function(dateStr) {
            if (!dateStr) return '未知';
            const date = new Date(dateStr);
            return date.toLocaleDateString('zh-CN', {
                year: 'numeric',
                month: 'long',
                day: 'numeric'
            });
        };
    }
    
    /**
     * 显示错误信息
     * @param {HTMLElement} container - 容器元素
     * @param {string} message - 错误信息
     */
    static showError(container, message) {
        if (container) {
            container.innerHTML = `<tr><td colspan="10" style="text-align: center; color: red;">${message}</td></tr>`;
        }
    }
    
    /**
     * 确认删除操作
     * @param {string} itemName - 项目名称
     * @param {Function} deleteCallback - 删除回调函数
     */
    static confirmAndDelete(itemName, deleteCallback) {
        if (confirm(`确定要删除"${itemName}"吗？此操作不可恢复！`)) {
            deleteCallback();
        }
    }
    
    /**
     * 处理图片预览
     * @param {Event} event - 事件对象
     * @param {string} previewId - 预览容器ID
     */
    static handleImagePreview(event, previewId) {
        const file = event.target.files[0];
        const previewContainer = document.getElementById(previewId);
        
        if (file && previewContainer) {
            const reader = new FileReader();
            
            reader.onload = function(e) {
                previewContainer.innerHTML = `<img src="${e.target.result}" style="max-width: 200px; max-height: 200px; margin-top: 10px;" alt="预览图片">`;
            };
            
            reader.readAsDataURL(file);
        } else if (previewContainer) {
            previewContainer.innerHTML = '';
        }
    }
}
